script memo#!/bin/sh
mS=`echo "scale=9; 0.37452" | bc -l`optionの詳細は忘れた。
x=1 dam1="data$1.dat" dam2='data$1.dat' echo $dam1 $dam2こうすると実行結果が、 data1.dat data$1.datとなる。ファイル名をループ内で次々と変えたいなら " " を使うとよい。
mS=`(echo 0.235e-02 | awk '{print $1*1.0}')`
10^(0.1*numL) をすると、couplingをlog プロットするのに 都合のいい間隔で進む。 ベキは整数しか駄目なのでわざわざ次を使う: x^y = exp(y*Log(x) ) 10^(x) = e(x*l(10)) example: 10^($numDM/50) とするときのトリック DMmass=`echo "scale=9; e(($numDM / 50 )*l(10)) " | bc -l`
x=3; y=4; hoge=$(($x+$y)) hoge2=$((3+4)) hoge3=`expr $x + $y`
for(XXX=minXXX; maxXXX; XXX=XXX+stepXXX)だが、bashではそうはいかない。以下のようにする。 (この例は、Mass=1000, 2000, 3000, ..., 20000) # minXXX : minimal value of XXX # maxXXX : maxmum value of XXX # stepXXX : 1回のfor loopで XXX をいくつ増やすか # numXXX : for loop の初期値 # maxnumXXX : for loop の最後の値 + 1 minMass=`echo "scale=9; 1000" | bc -l` maxMass=`echo "scale=9; 20000" | bc -l` step=1000 num=0 maxnum=`echo "scale=0; ($maxMass - $minMass)/$step + 1" | bc` while [ $num -lt $maxnum ] do Mass=`echo "scale=9; $minMass + $step * $num" | bc -l` (やりたいことを書く) num=`expr $num + 1` done
|